//
//  225_用队列实现栈.swift
//  Swift-LeetCode
//
//  Created by 卢悦明 on 2024/1/29.
//
/**
 Q2是一个空数组，把新元素加入到队头，再把Q1中的元素遍历Q2中本质上就是改变顺序。
 然后再把Q1和Q2互换，Q2变成了一个空队列，Q1变成了更改顺序后的“栈”
 */

import UIKit

class StackByQueue {
    private var queue1: Queue<Int> = Queue()
    private var queue2: Queue<Int> = Queue()
    init() {
        
    }
    
    func push(_ x: Int) {
        queue2.push(elem: x)
        while let item = queue1.pop() {
            queue2.push(elem: item)
        }
        (queue1, queue2) = (queue2, queue1)
    }
    
    func pop() -> Int? {
        queue1.pop()
    }
    
    func top() -> Int? {
        queue1.peek()
    }
    
    func isEmpty() -> Bool {
        queue1.isEmpty()
    }
}
